#!/bin/bash

#-----------------------------------------------------------------------------
#通过杨辉三角学习shell的基本用法
#https://blog.csdn.net/daocaokafei/article/details/120050007
#if (test -z $1)
#  判断$1这个变量是不是空字符串；-z判断字符串长度为0则是真
#$1 $2
#  表示运行脚本时，可以输入的参数，空格隔开
#printSpace $((($high-$i)*$space/2))
#  后面的是参数，printSpace()中的$1会被后面的参数替换9
#$(($space-${#a[$j]}))
#  ${#a[$j]}表示获取a[j]的长度
#echo -n ""
#  -n 表示不换行输出
#-------------------------------------------------------------------------------

# 设置输出三角的高度
if (test -z $1) ;then
	read -p "Input high Int lines:" high
else
	high=$1
fi
# 设置每一行字符与字符的间隔，1的效果就是每一行字符都是紧挨着.注意，1就是1个字符，12就是两个字符
if (test -z $2) ;then
	space=4
else
	space=$2
fi

#空位填充，每行第一个字符之前的空格
printSpace(){
	for((z=1;z<=$1;z++));do
		echo -n " "
	done
}

a[0]=1
for((i=0;i<high;i++));do
	#产生当前列数据数组
	for((j=$i;j>0;j--));do
		((a[$j]+=a[$j-1]))
	done
	printSpace $((($high-$i)*$space/2))
	for((j=0;j<=$i;j++));do
    # 待输出字符的左间距
		num=$(($space-${#a[$j]}))
		printSpace $(($num/2))

		echo -n ${a[$j]}
		# 待输出字符的右间距
		printSpace $(($num-$num/2))
	done
	echo ""
done